package com.anolesoft.amljmes.fortyone.service;

import java.util.Date;
import java.util.List;

import com.anolesoft.amljmes.fortyone.controller.MesStoveBaseController;
import com.anolesoft.amljmes.fortyone.controller.StoveSaveDTO;
import com.anolesoft.amljmes.fortyone.dto.*;
import com.anolesoft.amljmes.fortyone.entity.BasRclMachines;
import com.anolesoft.amljmes.fortyone.entity.MesGjgyxxFksz;
import com.anolesoft.amljmes.fortyone.vo.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

public interface MesStoveBaseService {
	// 根据id查询
	MesStoveBaseDto queryMesStoveBaseById(String objuid);

	// 根据炉次编号查询
	MesStoveBaseDto queryMesStoveBaseByLc(String furnaceid);

	// 根据工艺方法简称查询
	MesStoveBaseDto queryMesStoveBaseByGyffjc(String gyffjc);

	// 根据设备名称查询
	MesStoveBaseDto queryMesStoveBaseBySbmc(String devicename);

	// 根据所在厂房查询
	MesStoveBaseDto queryMesStoveBaseBySzcf(String plant);

	// 根据派工时间查询
	MesStoveBaseDto queryMesStoveBaseByPgsj(Date pgsj);
	
	/**
	 * 根据id修改状态、完检
	 * 如果所用制造记录都反馈完成将炉次状态改为完检5
	 * @param objuid
	 * @return
	 */
	void updateMesStoveBaseWj(String objuid);
	/**
	 * 根据id修改状态、开工时间
	 * 
	 * @param objuids
	 * @return
	 */
	int updateMesStoveBaseKg(List<String> objuids);

	/**
	 * 根据id修改状态、完工时间
	 * 
	 * @param objuids
	 * @return
	 */
	int updateMesStoveBaseWg(List<String> objuids);

	// 根据id修改派工状态
	int updateMesStoveBasePg(List<String> objuids);

	// 根据id修改状态
	int updateMesStoveBaseStateTx(MesStoveBaseDto inFoDtoParam);

	int updateMesStoveBaseStateJy(MesStoveBaseDto inFoDtoParam);

	// 根据条件查询
	List<MesStoveBaseDto> queryMesStoveBaseInfo(MesStoveBaseController.DemoVO demoVO);

	// 选择设备动态下拉
	List<BasRclMachinesDto> MachinesnameAll(String factoryId);

	// 删除炉次
	int deleteMesStoveBase(List<String> objuids);

	// 新增炉次
	int addMesStoveBase(MesStoveBaseDto inFoDtoParam);

	// 查询厂房，工段
	BasRclMachinesDto queryBasRclMachines(String machinesname, String factoryId);

	/**
	 * 前端下拉选根据输入的关键字模糊查询工艺规程简称
	 * 
	 * @param keyWord
	 * @return
	 */
	List<MesGjgyxxFksz> getCappSimpleNameOptions(String keyWord);

	/**
	 * 获取设备下拉选, 利用下拉选触发change事件时要显示厂房和工段信息，所以这里不返回 SelectOptionVO， 而直接返回
	 * BasRclMachines
	 * 
	 * @param keyWord
	 * @return
	 */
	List<BasRclMachines> getDevicenameOptions(String keyWord);

	/**
	 * 保存炉次
	 * 
	 * @param stoveSaveDTO
	 */
	void saveStove(StoveSaveDTO stoveSaveDTO);

	/**
	 * 根据查询条件获取炉次列表信息
	 * 
	 * @param stoveQueryParamDto
	 */
	Page<StoveVo> getStoveList(StoveQueryParamDto stoveQueryParamDto);

	/**
	 * 炉次派工时 扫码验证制造记录
	 * 
	 * @param scanIn
	 * @param mesStoveBaseUid
	 * @param gyffjc
	 * 
	 * @return
	 */
	MesOrderTraceInfoDto checkStoveDispatchScanIn(String scanIn, String mesStoveBaseUid, String gyffjc);

	/**
	 * 保存扫码的制造记录工序信息
	 * 
	 * @param mesOrderTraceInfoDto
	 */
	void saveMesStoveFabinfo(MesOrderTraceInfoDto mesOrderTraceInfoDto);

	/**
	 * 更新已派工的数量
	 * 
	 * @param curStoveUid
	 */
	void updateDispatchCountAndState(String curStoveUid);

	/**
	 * 更新炉次下的工序开工 反馈信息
	 * 
	 * @param objuids
	 */
	void updateProcessKg(List<String> objuids);

	/**
	 * 获取质量表单信息
	 * 
	 * @param objuid
	 * @return
	 */
	QualityFormVo getQualityFormInfo(String objuid);

	/**
	 * 保存炉次质量信息
	 * 
	 * @param saveQualityDto
	 */
	void saveQualityFormInfo(SaveQualityDto saveQualityDto);

	/**
	 * 质量表单页面检验员扫码
	 * 
	 * @param saveQualityDto
	 */
	void qualityFormcheckInput(SaveQualityDto saveQualityDto);

	Page<FortyoneApplyVo> getFortyoneApplyList(FortyoneApplyDto fortyoneApplyDto);

	Page<MesQualityUpdatelogVo> getFortyoneExamineList(FortyoneApplyDto fortyoneApplyDto);

	Page<MesQualityUpdatelogVo> getFortyoneAdoptList(FortyoneApplyDto fortyoneApplyDto);

	Page<MesQualityUpdatelogVo> getFortyoneHistoryList(FortyoneApplyDto fortyoneApplyDto);

	List<FortyoneVo> getFortyoneList(String objuid);

	List<FortyoneVo> getFortyoneListNew(String objuid);

	String getYz(String objuid, String zljl);

	void saveModifyApply(ModifyDto modifyDto);

	void go(String objuid);

	void back(String objuid);

	void adopt(String objuid);



}
